﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DiveManager
{
    
    public partial class RechnungsWarteschliefe : Form
    {
        public int kdnr;
        public string aktion;
        public int kunde_alle_positionen;
        public string vorgangsnr;
        public string person;

        protected DiveDatabaseEntities diveDatabase;
        protected BindingSource bindingSource;
        
        public RechnungsWarteschliefe()
        {
            InitializeComponent();

            // Init Database
            diveDatabase = new DiveDatabaseEntities();
            bindingSource = new BindingSource();
        }

        private void RechnungsWarteschliefe_Load(object sender, EventArgs e)
        {
            kdnr = Convert.ToInt32(Weitergabe_Kunde);

            if (kdnr == 0)
            {
                //Alle Einträge der Warteschleife ausgeben
                //Alle Kundenfelder Leer lassen
                
                //Button für Alles hinzufügen Enabled = true;
                btAlle.Enabled = false;
                txShowKDNR.Text = "kein Kunde";

                //Button zum Anzeigen aller Einträge Enabled = true;
                btAlleEinträge.Enabled = false;

                LoadWarteschliefeAlle();

               
                vorgangsnr = txVorgangsnummer.Text;
            }
            else
            {
                //Nur die Einträge der Warteschleife von diesem Kunden anzeigen
                //Daten des Kunden in die Fleder eintragen
                txShowKDNR.Text = kdnr.ToString();

                Kundendaten();

                LoadWarteschliefeKDNR();
            }

            txVorgangsnummer.DataBindings.Add(new Binding("Text", bindingSource, "ID"));
        }

        public string Weitergabe_Kunde
        {
            get;
            set;
        }

        private void btOK_Click(object sender, EventArgs e)
        {
            //Ausgewählter Vorgang dem Warenkorb hinzufügen
            //Aktion auf Einzel setzen

            aktion = "einzel";
            vorgangsnr = txVorgangsnummer.Text;

            //Der Warenkorb greift hier auf die Vorgangsnummer zu.
            //Anhand der Vorgangsnummer werden die Daten des Vorgangs 
            //in den Warenkorb geschrieben.
            //Die Vorgangsnummer wird aus der Liste ausgelesen und in vorgangsnr
            //gespeichert

            Close();


        }

        private void btKundensuche_Click(object sender, EventArgs e)
        {
            //Öffnen der Form KundensucheEinfach
            //Ausgewählten Kunden übernehmen und offene Posten von diesem Kunden anzeigen
            KundensucheEinfach kundensucheeinfach = new KundensucheEinfach();
            kundensucheeinfach.ShowDialog();

            kdnr = kundensucheeinfach.kdnr;
            txShowKDNR.Text = kdnr.ToString();

            Kundendaten();

            btAlleEinträge.Enabled = true;
            btAlle.Enabled = true;

            LoadWarteschliefeKDNR();
        }

        private void btAlle_Click(object sender, EventArgs e)
        {
            //Alle offenen Posten des Kunden in den Warenkorb schreiben
            //Aktion auf "alle" setzen

            aktion = "alle";

            //Der Warenkorb ruft hier die Kundennummer (kdnr) ab.
            //Anhand der kdnr werden alle offenen Vorgänge, die diesem Kunden
            //zuzuordnen sind dem Warenkorb hinzugefügt.
            kunde_alle_positionen = kdnr;
            
            Close();
        }

        private void btAlleEinträge_Click(object sender, EventArgs e)
        {
            //Es werden alle Einträge der Warteschleife angezeigt.
            //Unabhängig vom Kunden.
            //Ausgabefelder für den Kunden leeren.
            txShowKDNR.Text = "kein Kunde";
            txShowNachname.Text = "";
            txShowVorname.Text = "";

            LoadWarteschliefeAlle();


            //Button für Alles hinzufügen Enabled = true;
            btAlle.Enabled = false;

            //Button zum Anzeigen aller Einträge Enabled = true;
            btAlleEinträge.Enabled = false;

        }

        private void Kundendaten()
        {
            var Customer_MainPerson = from cm in diveDatabase.Customer_Main
                                      where cm.KDNR == kdnr
                                      select cm;

            foreach (var cm in Customer_MainPerson)
            {
                person = cm.Person;
            }

            if (person.Equals("einzelperson"))
            {
                //Elemente für die Firma ausblenden
                label2.Text = "Name";
                txShowNachname.Visible = true;
                txShowVorname.Visible = true;
                txShowFirma.Visible = false;

                //Auslesen der Daten aus Customer Main
                var Customer_Main = from cm in diveDatabase.Customer_Main
                                    where cm.KDNR == kdnr
                                    select cm;

                foreach (var cm in Customer_Main)
                {
                    txShowVorname.Text = cm.Vorname;
                    txShowNachname.Text = cm.Name;
                }
            }

            if (person.Equals("firma"))
            {

                //Elemente für die Einzelperson ausblenden
                label2.Text = "Firma";
                txShowNachname.Visible = false;
                txShowVorname.Visible = false;
                txShowFirma.Visible = true;

                //Auslesen der Daten aus Customer Main
                var Customer_Main = from cm in diveDatabase.Customer_Main
                                    where cm.KDNR == kdnr
                                    select cm;

                foreach (var cm in Customer_Main)
                {
                    txShowFirma.Text = cm.Firma;
                }
            }
        }

        protected void LoadWarteschliefeKDNR()
        {
            IQueryable<RechnungWarteschleife> dataQuery = (from a in diveDatabase.RechnungWarteschleife
                                                      where a.KDNR == kdnr
                                                      select a);

            // Bind Data to BindingSource
            bindingSource.DataSource = dataQuery;

            // Bind BindingSource to List
            WarteschleifeList.DataSource = bindingSource;


            // Hide ID-Columns
            WarteschleifeList.Columns["ID"].Visible = false;
            WarteschleifeList.Columns["Bezeichnung"].Visible = true;
            WarteschleifeList.Columns["Beschreibung"].Visible = true;
            WarteschleifeList.Columns["KDNR"].Visible = false;
            WarteschleifeList.Columns["Menge"].Visible = true;
            WarteschleifeList.Columns["User"].Visible = false;
            WarteschleifeList.Columns["Preis"].Visible = false;
            WarteschleifeList.Columns["Gesamtpreis"].Visible = true;
            WarteschleifeList.Columns["Date"].Visible = true;


            // Set Column Headers
            //WarteschleifeList.Columns["Artikel_Nr"].HeaderText = "Art. Nr.";
            //WarteschleifeList.Columns["Ist_Preis"].HeaderText = "Einzelpreis";
            //WarteschleifeList.Columns["Gesamtpreis"].HeaderText = "Gesamt";


        }

        protected void LoadWarteschliefeAlle()
        {
            IQueryable<RechnungWarteschleife> dataQuery = (from a in diveDatabase.RechnungWarteschleife
                                                           select a);

            // Bind Data to BindingSource
            bindingSource.DataSource = dataQuery;

            // Bind BindingSource to List
            WarteschleifeList.DataSource = bindingSource;


            // Hide ID-Columns
            WarteschleifeList.Columns["ID"].Visible = false;
            WarteschleifeList.Columns["Bezeichnung"].Visible = true;
            WarteschleifeList.Columns["Beschreibung"].Visible = true;
            WarteschleifeList.Columns["KDNR"].Visible = false;
            WarteschleifeList.Columns["Menge"].Visible = true;
            WarteschleifeList.Columns["User"].Visible = false;
            WarteschleifeList.Columns["Preis"].Visible = false;
            WarteschleifeList.Columns["Gesamtpreis"].Visible = true;
            WarteschleifeList.Columns["Date"].Visible = true;


            // Set Column Headers
            //WarteschleifeList.Columns["Artikel_Nr"].HeaderText = "Art. Nr.";
            //WarteschleifeList.Columns["Ist_Preis"].HeaderText = "Einzelpreis";
            //WarteschleifeList.Columns["Gesamtpreis"].HeaderText = "Gesamt";


        }
    }
}
